package com.marvels.dubbo.externalservice.service;

import java.util.List;
import java.util.Map;

import com.fintech.third.model.ZxDataReqDTO;
import com.fintech.third.model.ZxDataRespDTO;
import com.fintech.third.model.intbank.IntBankBanruDetail;
import com.fintech.third.model.intbank.IntBankBasiInfoCollection;
import com.fintech.third.model.intbank.IntBankBasic;
import com.fintech.third.model.intbank.IntBankCreditCard;
import com.fintech.third.model.intbank.IntBankCreditPaymentRecords;
import com.fintech.third.model.intbank.IntBankCredittips;
import com.fintech.third.model.intbank.IntBankDwellmessage;
import com.fintech.third.model.intbank.IntBankEndowmentInsurance;
import com.fintech.third.model.intbank.IntBankGuaranteeCount;
import com.fintech.third.model.intbank.IntBankLog;
import com.fintech.third.model.intbank.IntBankNotCredittips;
import com.fintech.third.model.intbank.IntBankNotPinshouseholds;
import com.fintech.third.model.intbank.IntBankNotQuasiCredit;
import com.fintech.third.model.intbank.IntBankPositionmesage;
import com.fintech.third.model.intbank.IntBankQueryDetail;
import com.fintech.third.model.intbank.IntBankQuerySummary;
import com.fintech.third.model.intbank.IntBankStandardCreditCard;
import com.fintech.third.model.intlog.IntDataQueryLog;
import com.marvels.common.dto.MarvelsResultDTO;
import com.marvels.common.exception.MarvelsBusinessException;

public interface IntBankDataService {
	/**
	 * 征信数据
	 * 
	 * @param map
	 * @return
	 */
	public List<Map<String, Object>> detailsOfLoanInformation(Map<String, String> map);

	public Map<String, Object> viewRiskInfoPositionData(Map<String, String> map);

	

	/**
	 * 贷款记录
	 * 
	 * @param map
	 * @return
	 */
	public Map<String, Object> intBankCreditPaymentRecords(Map<String, String> map);

	/**
	 * 贷记卡信息
	 * 
	 * @param map
	 * @return
	 */
	public Map<String, Object> intBankCreditCard(Map<String, String> map);

	/**
	 * 准贷记卡数据
	 * 
	 * @param map
	 * @return
	 */
	public List<IntBankStandardCreditCard> intBankStandardCreditCard(Map<String, String> map);

	/**
	 * 公共信息明细
	 * 
	 * @param map
	 * @return
	 */
	public List<IntBankEndowmentInsurance> intBankEndowmentInsurance(Map<String, String> map);

	/**
	 * 信息摘要部分
	 * 
	 * @param map
	 * @return
	 */
	public Map<String, Object> summaryInformationData(Map<String, String> map);

	/**
	 * 信息摘要5部分
	 * 
	 * @param map
	 * @return
	 */
	public List<IntBankGuaranteeCount> intBankGuaranteeCount(Map<String, String> map);

	/**
	 * 添加准贷记卡信息详细
	 * 
	 * @param intBankStandardCreditCard
	 * @return
	 */
	public int saveIntBankStandardCreditCard(IntBankStandardCreditCard intBankStandardCreditCard);

	/**
	 * 添加 养老保险金数据
	 * 
	 * @param intBankStandardCreditCard
	 * @return
	 */
	public int saveIntBankEndowmentInsurance(IntBankEndowmentInsurance intBankEndowmentInsurance);

	/**
	 * 更新养老保险金数据
	 * 
	 * @param intBankEndowmentInsurance
	 * @return
	 */
	public int updateIntBankEndowmentInsurance(IntBankEndowmentInsurance intBankEndowmentInsurance);

	/**
	 * 保存未销户准贷记卡信息
	 * 
	 * @param intBankNotQuasiCredit
	 * @return
	 */
	public int saveIntBankNotQuasiCredit(IntBankNotQuasiCredit intBankNotQuasiCredit);

	/**
	 * 更新未销户准贷记卡信息
	 * 
	 * @param intBankNotQuasiCredit
	 * @return
	 */
	public int updateIntBankNotQuasiCredit(IntBankNotQuasiCredit intBankNotQuasiCredit);

	/**
	 * 未结清贷款信息汇总更新
	 * 
	 * @param intBankEndowmentInsurance
	 * @return
	 */
	public int updateIntBankNotCredittips(IntBankNotCredittips intBankNotCredittips);

	/**
	 * 未结清贷款信息汇总信息保存
	 * 
	 * @param intBankNotQuasiCredit
	 * @return
	 */
	public int saveIntBankNotCredittips(IntBankNotCredittips intBankNotCredittips);

	/**
	 * 对外贷款担保信息汇总更新
	 * 
	 * @param intBankEndowmentInsurance
	 * @return
	 */
	public int updateIntBankGuaranteeCount(IntBankGuaranteeCount intBankGuaranteeCount);

	/**
	 * 对外贷款担保信息汇总保存
	 * 
	 * @param intBankNotQuasiCredit
	 * @return
	 */
	public int saveIntBankGuaranteeCount(IntBankGuaranteeCount intBankGuaranteeCount);

	/**
	 * 未销户贷记卡信息汇总更新
	 * 
	 * @param intBankEndowmentInsurance
	 * @return
	 */
	public int updateIntBankNotPinshouseholds(IntBankNotPinshouseholds intBankNotPinshouseholds);

	/**
	 * 未销户贷记卡信息汇总保存
	 * 
	 * @param intBankNotQuasiCredit
	 * @return
	 */
	public int saveIntBankNotPinshouseholds(IntBankNotPinshouseholds intBankNotPinshouseholds);

	/**
	 * 贷款信息明细保存
	 * 
	 * @param intBankCreditPaymentRecords
	 * @return
	 */
	public int saveIntBankCreditPaymentRecords(IntBankCreditPaymentRecords intBankCreditPaymentRecords);

	/**
	 * 根据loanId查询贷记卡信息
	 * 
	 * @param map
	 * @return
	 */
	public List<IntBankCreditCard> intBankCreditCardLoanId(Map<String, String> map);

	/**
	 * 贷记卡信息详细更新
	 * 
	 * @param intBankCreditPaymentRecords
	 * @return
	 */
	public int updateIntBankCreditCard(IntBankCreditCard intBankCreditCard);

	/**
	 * 贷记卡信息详细保存
	 * 
	 * @param intBankCreditPaymentRecords
	 * @return
	 */
	public int saveIntBankCreditCard(IntBankCreditCard intBankCreditCard);

	/**
	 * addQueryDetail位置的数据信息
	 * 
	 * @param map
	 * @return
	 */
	public Map<String, Object> addQueryDetailPositionData(Map<String, String> map);

	/**
	 * 保存本人查询记录明细
	 * 
	 * @param map
	 * @return
	 */
	public int saveIntBankBanruDetail(IntBankBanruDetail intBankBanruDetail);

	/**
	 * 保存本人查询记录明细
	 * 
	 * @param map
	 * @return
	 */
	public int updateIntBankBanruDetail(IntBankBanruDetail intBankBanruDetail);

	/**
	 * 查询本人查询记录明细
	 * 
	 * @param map
	 * @return
	 */
	public List<IntBankBanruDetail> intBankBanruDetail(Map<String, String> map);

	/**
	 * 删除查询记录汇总
	 * 
	 * @param id
	 * @return
	 */
	public int deleteIntBankQuerySummary(long id);

	/**
	 * 保存记录汇总
	 * 
	 * @param id
	 * @return
	 */
	public int saveIntBankQuerySummary(IntBankQuerySummary intBankQuerySummary);

	/**
	 * 更新记录汇总
	 * 
	 * @param id
	 * @return
	 */
	public int updateIntBankQuerySummary(IntBankQuerySummary intBankQuerySummary);

	/**
	 * 删除本人查询记录明细
	 * 
	 * @param id
	 * @return
	 */
	public int deleteIntBankBanruDetail(long id);

	/**
	 * 保存个人基本信息(银行征信数据)
	 * 
	 * @return
	 */
	public int saveIntBankBasic(IntBankBasic intBankBasic);

	/**
	 * 更新个人基本信息(银行征信数据)
	 * 
	 * @return
	 */
	public int updateIntBankBasic(IntBankBasic intBankBasic);

	/**
	 * 查询个人基本信息(银行征信数据)
	 * 
	 * @param map
	 * @return
	 */
	public List<IntBankBasic> intBankBasic(Map<String, String> map);

	/**
	 * 保存信用提示
	 * 
	 * @return
	 */
	public int saveIntBankCredittips(IntBankCredittips intBankCredittips);

	/**
	 * 更新信用提示
	 * 
	 * @return
	 */
	public int updateIntBankCredittips(IntBankCredittips intBankCredittips);

	/**
	 * 查询信用提示
	 * 
	 * @param map
	 * @return
	 */
	public List<IntBankCredittips> intBankCredittips(Map<String, String> map);

	/**
	 * 保存个人基本信息(职业信息)
	 * 
	 * @return
	 */
	public int saveIntBankPositionmesage(IntBankPositionmesage intBankPositionmesage);

	/**
	 * 更新保存记录明细
	 * 
	 * @param intBankQueryDetail
	 * @return
	 */
	public int updateIntBankQueryDetail(IntBankQueryDetail intBankQueryDetail);

	/**
	 * 更新个人基本信息(职业信息)
	 * 
	 * @return
	 */
	public int updateIntBankPositionmesage(IntBankPositionmesage intBankPositionmesage);

	/**
	 * 查询个人基本信息(职业信息)
	 * 
	 * @param map
	 * @return
	 */
	public List<IntBankPositionmesage> intBankPositionmesage(Map<String, String> map);

	/**
	 * 更新准贷记卡信息详细
	 * 
	 * @param intBankStandardCreditCard
	 * @return
	 */
	public int updateIntBankStandardCreditCard(IntBankStandardCreditCard intBankStandardCreditCard);

	/**
	 * 保存居住信息
	 * 
	 * @return
	 */
	public int saveIntBankDwellmessage(IntBankDwellmessage intBankDwellmessage);

	/**
	 * 更新居住信息
	 * 
	 * @return
	 */
	public int updateIntBankDwellmessage(IntBankDwellmessage intBankDwellmessage);

	/**
	 * 查询居住信息
	 * 
	 * @param map
	 * @return
	 */
	public List<IntBankDwellmessage> intBankDwellmessage(Map<String, String> map);

	/**
	 * 添加识别表记录
	 * 
	 * @param intBankLog
	 * @return
	 */
	public int insertIntBankLog(IntBankLog intBankLog);

	public int saveIntBankQueryDetail(IntBankQueryDetail intBankQueryDetail);

	public int deleteIntBankQueryDetail(long id);

	/**
	 * 查询记录汇总
	 * 
	 * @param map
	 * @return
	 */
	public List<IntBankQuerySummary> intBankQuerySummary(Map<String, String> map);
	
	
	public List<Map<String,Object>> selectAll(Map<String,String> msg);

	public List<Map<String, Object>> selectByloanIdAndSerialNum(String loanId,String serialNum);
	
	
	public int insertDataLog(IntDataQueryLog IntDataQueryLog);
	
	public List<IntDataQueryLog> intDataQueryLogLoanId(Map<String,String> msg);

	/**
	 * 征信报告审核
	 * 获取报告pdf的全部数据
	 * @param map
	 * @return
	 */
	public IntBankBasiInfoCollection getMarvelsCreditReportData(Map<String, String> map) throws MarvelsBusinessException;
	
	/**
	 * 保存基本信息
	 * @param intBankBasic
	 * @return
	 */
	public IntBankBasic saveMarvelsIntBankBasic(IntBankBasic intBankBasic) throws MarvelsBusinessException;
	
	/**
	 * 新核心
	 * 保存居住信息
	 * 返回更新后的居住信息
	 * @param intBankDwellmessage
	 * @return
	 * @throws Exception 
	 */
	IntBankDwellmessage saveMarvelsIntBankDwellmessage(IntBankDwellmessage intBankDwellmessage)throws MarvelsBusinessException;
	
	/**
	 * 新核心
	 * 保存职业信息
	 * 返回更新后的职业信息
	 * @param intBankPositionmesage
	 * @return
	 * @throws MarvelsBusinessException
	 */
	IntBankPositionmesage saveMarvelsIntBankPositionmesage(IntBankPositionmesage intBankPositionmesage)throws MarvelsBusinessException;
	
	/**
	 * 信用提示保存
	 * @param intBankCredittips
	 * @return
	 * @throws MarvelsBusinessException
	 */
	IntBankCredittips saveMarvelsIntBankCredittips(IntBankCredittips intBankCredittips)throws MarvelsBusinessException;
	
	/**
	 * 未结清贷款信息汇总保存
	 * @param intBankNotCredittips
	 * @return
	 * @throws MarvelsBusinessException
	 */
	IntBankNotCredittips saveMarvelsIntBankNotCredittips(IntBankNotCredittips intBankNotCredittips)throws MarvelsBusinessException;
	
	/**
	 * 保存未销户贷记卡信息汇总
	 * @param intBankNotPinshouseholds
	 * @return
	 */
	IntBankNotPinshouseholds saveMarvelsIntBankNotPinshouseholds(IntBankNotPinshouseholds intBankNotPinshouseholds)throws MarvelsBusinessException;
	
	/**
	 * 保存未销户准贷记卡信息汇总
	 * @param intBankNotQuasiCredit
	 * @return
	 */
	IntBankNotQuasiCredit saveMarvelsIntBankNotQuasiCredit(IntBankNotQuasiCredit intBankNotQuasiCredit)throws MarvelsBusinessException;
	
	/**
	 * 对外贷款担保信息汇总保存
	 * @param intBankGuaranteeCount
	 * @return
	 */
	IntBankGuaranteeCount saveMarvelsIntBankGuaranteeCount(IntBankGuaranteeCount intBankGuaranteeCount)throws MarvelsBusinessException;
	
	/**
	 * 新增贷款信息
	 * @param intBankCreditPaymentRecord
	 * @return
	 * @throws MarvelsBusinessException
	 */
	List<IntBankCreditPaymentRecords> saveMarvelsIntBankCreditPaymentRecord(IntBankCreditPaymentRecords intBankCreditPaymentRecord)throws MarvelsBusinessException;
	
	/**
	 * 更新贷款信息
	 * @param intBankCreditPaymentRecord
	 * @return
	 * @throws MarvelsBusinessException
	 */
	int updateIntBankCreditPaymentRecords(IntBankCreditPaymentRecords intBankCreditPaymentRecord)throws MarvelsBusinessException;
	
	/**
	 * 征信报告审核-提交时信息保存
	 * @param loanId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	MarvelsResultDTO saveMarvelsCreditReport(String loanId)throws MarvelsBusinessException;

	/**征信数据列表获取
	 * @param reqDto
	 * @param dataProvider
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public ZxDataRespDTO getCreditData(ZxDataReqDTO  reqDto, String dataProvider) throws MarvelsBusinessException;
	
	/**征信明细数据列表获取
	 * @param reqDto
	 * @param dataProvider
	 * @return
	 */
	public ZxDataRespDTO getDetailCreditData(ZxDataReqDTO  reqDto, String dataProvider);

}
